package com.heima.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.heima.mapper.SkuClassMapper;
import com.heima.mapper.SkuMapper;
import com.heima.pojo.dto.SkuAddDTO;
import com.heima.pojo.dto.SkuPageDTO;
import com.heima.pojo.dto.SkuPutDTO;
import com.heima.pojo.entity.Sku;
import com.heima.pojo.entity.SkuClass;
import com.heima.pojo.vo.SkuVO;
import com.heima.result.PageResult;
import com.heima.service.SkuService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Slf4j
@Service
public class SkuServiceImpl implements SkuService {
    @Autowired
    SkuMapper skuMapper;
    @Autowired
    SkuClassMapper skuClassMapper;

    /**
     * 新增商品
     */
    @Override
    public boolean insertSku(SkuAddDTO dto) {
        Sku sku = new Sku();
        BeanUtils.copyProperties(dto, sku);
        sku.setCreateTime(LocalDateTime.now());
        sku.setUpdateTime(LocalDateTime.now());
        int result = skuMapper.insertSku(sku);
        return result > 0;
    }
    /**
     * 商品搜索 分页查询
     */
    @Override
    public PageResult<SkuVO> selectPage(SkuPageDTO dto) {

        PageHelper.startPage(dto.getPageIndex(),dto.getPageSize());
        Page<Sku> page=skuMapper.page(dto);//***分页查询   (获取Sku的值)
        /**
         * 给返回的对象 添加数据     (给前端返回的对象赋值)
         */
        List<SkuVO> list = new ArrayList<>();
        for (Sku sku : page) { //遍历page集合 获取classId
            Integer classId = sku.getClassId();
            SkuClass skuClass = skuClassMapper.selectById(classId);//根据id获取skuClass的值
            SkuVO skuVO = new SkuVO();
            skuVO.setSkuClass(skuClass);//获取的skuClass的值添加到skuVO 的 SkuClass
            BeanUtils.copyProperties(sku,skuVO);//然后把page 的剩余值给skuVO   (skuVO的值赋满)
            list.add(skuVO); //然后把skuVO的添加到SkuPageVO的list集合
        }
        return new PageResult<>(dto.getPageIndex(),dto.getPageSize(),page.getPages(),page.getTotal(),list); //返回给前端
    }
    /**
     * 修改商品
     */
    @Override
    public boolean update(String skuId, SkuPutDTO dto) {
        Sku sku = new Sku();
        BeanUtils.copyProperties(dto,sku);
        sku.setSkuId(Long.parseLong(skuId));
        sku.setUpdateTime(LocalDateTime.now());
        int result =skuMapper.update(sku);
        return result>0;
    }
}
